package cn.mujiankeji.mbrowser.界面.框架.主视图.动画

import androidx.compose.animation.ContentTransform
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.animation.togetherWith

// 定义动画的持续时间
private const val PAGE_SWITCH_ANIMATION_DURATION_MS = 300 // 毫秒

/**
 * 水平滑动切换效果。
 * @param slideDirection 正数表示新页面从右边进入 (前进)，负数表示新页面从左边进入 (后退)。
 */
fun 水平滑动页面切换(
    slideDirection: Int // 1 表示前进（新页面从右边进入），-1 表示后退（新页面从左边进入）
): ContentTransform {
    return slideInHorizontally(
        animationSpec = tween(PAGE_SWITCH_ANIMATION_DURATION_MS),
        initialOffsetX = { fullWidth -> slideDirection * fullWidth }
    ) + fadeIn(animationSpec = tween(PAGE_SWITCH_ANIMATION_DURATION_MS)) togetherWith
            slideOutHorizontally(
                animationSpec = tween(PAGE_SWITCH_ANIMATION_DURATION_MS),
                targetOffsetX = { fullWidth -> -slideDirection * fullWidth }
            ) + fadeOut(animationSpec = tween(PAGE_SWITCH_ANIMATION_DURATION_MS))
}

/**
 * 简单的淡入淡出效果 (备选)。
 */
fun 淡入淡出页面切换(): ContentTransform {
    return fadeIn(animationSpec = tween(PAGE_SWITCH_ANIMATION_DURATION_MS)) togetherWith
            fadeOut(animationSpec = tween(PAGE_SWITCH_ANIMATION_DURATION_MS))
}

// 如果未来有翻书页效果，也可以在这里定义
// fun 翻书页面切换(): ContentTransform { ... } 